import { ColDef, ICellRendererParams } from '@ag-grid-community/core'

/** columnDefs 配置项 */
export type TCol<T extends keyof IMsgList = keyof IMsgList> = ColDef<IMsgList, IMsgList[T]> & { field: T }

/** cellRenderer 等相关参数 */
export type TParams<T extends keyof IMsgList = keyof IMsgList> = ICellRendererParams<IMsgList, IMsgList[T]>

/** 消息通知 */
export interface IMsgList {
  /** 渠道类型 1.邮箱 2.飞书机器人 3.短信 4.站内信 */
  channelType: 1 | 2 | 3 | 4
  /** 关联邮件模板id */
  templateId: string
  /** 启用状态  0停用 1启用*/
  enableFlag: 0 | 1
  /** 触发事件 1.发布路由 2.发布自定义邮件 */
  eventType: 1 | 2
  /** 接受对象：1. 客户联系人 2.系统员工 */
  receiveObj: 1 | 2
  /** 关联路由ID集合 */
  routeIds: number[]
  /**发送类型 1.立即发送 2.定时发送  */
  sendType: 1 | 2
  /** 标题 */
  title: string
  /** 类型 1.状态更新类 2.消息通知类 3.营销通知类 */
  type: 1 | 2 | 3
  /** 消息id */
  messageId: string
  /** 更新时间 */
  updateAt: string
  ['操作']?: null
}

/** 路由模板item */
export interface IRoute {
  /** 路由id */
  routeId: string
  /** 路由编号 */
  routeNo: string
  /** 中文模板（第一行标题，其它行描述） */
  templateCn: string
  /** 英文模板（第一行标题，其它行描述） */
  templateEn: string
  /** 路由节点 */
  routeNode: number
  /** 物流状态 */
  logisticsStatus: number
  /** 路由类型 1正常 2异常 */
  routeType: 1 | 2
  /** 需跟进  0否 1是*/
  actionFlag: 0 | 1
  /** 是否客户可见 0不可见 1可见 */
  visibleFlag: 0 | 1
}

/** 消息详情 */
export interface IMsgDetail extends IMsgList {
  messageRouteList: IRoute[]
  templateInfo: ITemplate
}

export interface IFormValues {
  /** 渠道类型 1.邮箱 2.飞书机器人 3.短信 4.站内信 */
  channelType: '1' | '2' | '3' | '4'
  /** 关联邮件模板id */
  templateId: string
  /** 启用状态  0停用 1启用*/
  enableFlag: 0 | 1
  /** 触发事件 1.发布路由 2.发布自定义邮件 */
  eventType: 1 | 2
  /** 接受对象：1. 客户联系人 2.系统员工 */
  receiveObj: 1 | 2
  /** 关联路由ID集合 */
  routeIds: string[]
  /**发送类型 1.手动发送 2.立即发送 3.定时发送 */
  sendType: 1 | 2 | 3
  /** 标题 */
  title: string
  /** 类型 1.状态更新类 2.消息通知类 3.营销通知类 */
  type: 1 | 2 | 3
  messageRouteList: IRoute[]
  templateList: ITemplate[]
}

export interface ISendValues {
  messageId?: string
  /** 渠道类型 1.邮箱 2.飞书机器人 3.短信 4.站内信 */
  channelType: '1' | '2' | '3' | '4'
  /** 关联邮件模板id */
  templateId: string
  /** 启用状态  0停用 1启用*/
  enableFlag: 0 | 1
  /** 触发事件 1.发布路由 2.发布自定义邮件 */
  eventType: 1 | 2
  /** 接受对象：1. 客户联系人 2.系统员工 */
  receiveObj: 1 | 2
  /** 关联路由ID集合 */
  routeIds: string[]
  /**发送类型 1.手动发送 2.立即发送 3.定时发送 */
  sendType: 1 | 2 | 3
  /** 标题 */
  title: string
  /** 类型 1.状态更新类 2.消息通知类 3.营销通知类 */
  type: 1 | 2 | 3
}

/** 消息查询 */
export interface ISearch {
  /**第几页 */
  page: number
  /** 每页数量 */
  size: number
  /** 标题 */
  title: string
}

/** 接口返回 */
export interface IMsgListRes {
  current: number
  pages: number
  total: number
  size: number
  records: IMsgList[]
}

/** 邮件模板列表 columnDefs 配置项 */
export type TTemplateCol<T extends keyof ITemplate = keyof ITemplate> = ColDef<ITemplate, ITemplate[T]> & { field: T }

/** 邮件模板列表 cellRenderer 等相关参数 */
export type TTemplateParams<T extends keyof ITemplate = keyof ITemplate> = ICellRendererParams<ITemplate, ITemplate[T]>

/** 邮件模板 */
export interface ITemplate {
  /** 模板ID */
  templateId: string
  /** 模板标题 */
  title: string | null
  /** 模板类型 */
  type: string | null
  /** 邮件标题 */
  subject: string | null
  /** 邮件正文html */
  htmlBody: string | null
}

/** 邮件模板列表 */
export interface ITemplateRes {
  total: number
  records: ITemplate[]
}
